package ar.edu.uade.centroDistribucion.facade;

import java.util.List;

import javax.ejb.Remote;
import javax.ejb.Stateless;
import ar.edu.uade.centroDistribucion.facade.FacadeCentroDistribucion;
import ar.edu.uade.centroDistribucion.sessionBeans.administradorArticulo;
import ar.edu.uade.centroDistribucion.sessionBeans.administradorEnvioATienda;
import ar.edu.uade.centroDistribucion.sessionBeans.administradorIntegracion;
import ar.edu.uade.centroDistribucion.sessionBeans.administradorReposicionFabrica;
import ar.edu.uade.centroDistribucion.sessionBeans.administradorSolicitudDistribucion;
import ar.edu.uade.centroDistribucion.sessionBeans.administradorSolicitudFabricacion;
import ar.edu.uade.centroDistribucion.valueObjects.ArticuloVO;
import ar.edu.uade.centroDistribucion.valueObjects.EnvTVO;
import ar.edu.uade.centroDistribucion.valueObjects.EnvioPendienteResultadoVO;
import ar.edu.uade.centroDistribucion.valueObjects.NuevoArticuloVO;
import ar.edu.uade.centroDistribucion.valueObjects.RepAFVO;
import ar.edu.uade.centroDistribucion.valueObjects.SolDistVO;
import ar.edu.uade.centroDistribucion.valueObjects.SolFabrVO;
import ar.edu.uade.centroDistribucion.valueObjects.VistaEnvTPendienteVO;
import ar.edu.uade.centroDistribucion.valueObjects.VistaEnvTVO;
import ar.edu.uade.centroDistribucion.valueObjects.VistaNuevoArticuloVO;
import ar.edu.uade.centroDistribucion.valueObjects.VistaRepAFVO;
import ar.edu.uade.centroDistribucion.valueObjects.VistaSolDistVO;
import ar.edu.uade.centroDistribucion.valueObjects.VistaSolFabrVO;
import javax.ejb.EJB;
import javax.jws.WebMethod;
import javax.jws.WebService;

@Remote
@Stateless
public  class FacadeCentroDistribucionBean implements FacadeCentroDistribucion {

	@EJB
	private administradorArticulo adminArticulo;
	@EJB
	private administradorEnvioATienda adminEnvioTienda;
	@EJB
	private administradorReposicionFabrica adminReposicionFabrica;
	@EJB
	private administradorSolicitudDistribucion adminSolicitudDistribucion;
	@EJB
	private administradorSolicitudFabricacion adminSolicitudFabricacion;
	@EJB
	private administradorIntegracion adminIntegracion;
	
	public List<VistaEnvTVO> IniciarEnvioATienda() {
		return adminEnvioTienda.iniciarEnvioATienda();
	}	
	public void GenerarEnvioATienda(EnvTVO envTVO,int idEnvioATienda){
		try {
			adminEnvioTienda.Generar(envTVO, idEnvioATienda);
			System.out.print("A Punto de enviar ENVT");
			adminIntegracion.GenerarEnvioATienda(envTVO, idEnvioATienda);	
		} catch (Exception e) {
			// TODO: handle exception
			System.out.print("Error al enviar ENVT");
		}
		
	}

	public List<VistaSolFabrVO> IniciarSolicitudFabricacion() {
		return adminSolicitudFabricacion.iniciarSolicitudFabricacion();
	}
	public void Generar(List<SolFabrVO> solFabrs) {
		try {
			adminSolicitudFabricacion.Generar(solFabrs);
			//Envio por WS
			for (SolFabrVO solFabrVO : solFabrs) {
				adminIntegracion.GenerarSolicitudFabricacion(solFabrVO);
			}
		} catch (Exception e) {
			// TODO: handle exception
			System.out.print("Error al generar/grabar SOLFAB "+ e.getMessage());
		}
		
	}

	public VistaSolDistVO ProcesarSolicitudDistribucion(SolDistVO solDist) {
		return adminSolicitudDistribucion.Distribuir(solDist);
	}

	public List<VistaRepAFVO> ReponerArticulos(RepAFVO repaf) {
		return adminReposicionFabrica.ReponerArticulos(repaf);		
	}

	public VistaNuevoArticuloVO ProcesarArticuloNuevo(NuevoArticuloVO articuloVO) {
		return adminArticulo.ProcesarArticuloNuevo(articuloVO);
	}
	public List<VistaEnvTPendienteVO> IniciarEnvioPendientes(){
		return adminEnvioTienda.IniciarEnvioPendientes();
	}
	public void ProcesarEnviosPendientes(List<EnvioPendienteResultadoVO> lista)
	{
		adminEnvioTienda.ProcesarEnviosPendientes(lista);
	}
	public void EnviarEnvtWS(EnvTVO envTVO,int idEnvioATienda)
	{
		adminIntegracion.GenerarEnvioATienda(envTVO, idEnvioATienda);
	}
		
}
